Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO
                 ■Music Generator Board
Target           PC-9801-14
Explanation    o The music generator board is a sound source board equipped with
                 a synthesizer LSI (TMS3631-RI104 manufactured by Texas Instruments) and
                 capable of 8 channel sound generation.
               o The I/O addresses used by this board are as follows.
                 ------------+-------+-----+--------------------------------------------------
                 I/O address | Width | R/W | Contents
                 ------------+-------+-----+--------------------------------------------------
                 0088h       | BYTE  | R/W | 8255A PORT A (READ/WRITE ENVELOP 1)
                 008Ah       | BYTE  | R/W | 8255A PORT B (READ/WRITE ENVELOP 2)
                 008Ch       | BYTE  | R/W | 8255A PORT C (READ/WRITE DATA)
                 008Eh       | BYTE  |  W  | 8255A MODE REGISTER
                 008Eh       | BYTE  |  R  | READ SWITCH (reads DIP SW on board)
                 0188h       | BYTE  |  W  | WRITE MASK REGISTER
                 018Ah       | BYTE  |  W  | WRITE MASK REGISTER
                 018Ch       | BYTE  | R/W | 8253A COUNTER #2
                 018Eh       | BYTE  |  W  | 8253A CONTROL WORD
                 018Eh       | BYTE  |  R  | READ STATUS (reads strap switch on board)
                 ------------+-------+-----+--------------------------------------------------
                 * Only 018Eh (Read) has a fixed I/O address. Other I/O addresses can be
                   changed with the DIP switch on the board.
                 * The upper two bits of the address bus (bits 15, 14) are not decoded.
I/O              0088h,008Ah,008Ch,008Eh
Name             Envelope and synthesizer LSI control
Chip             Equivalent to 8255A
Function
                 ------------+-------+-----+--------------------------------------------------
                 I/O address | Width | R/W | Contents
                 ------------+-------+-----+--------------------------------------------------
                 0088h       | BYTE  | R/W | 8255A PORT A(READ/WRITE ENVELOP 1)
                 008Ah       | BYTE  | R/W | 8255A PORT B(READ/WRITE ENVELOP 2)
                 008Ch       | BYTE  | R/W | 8255A PORT C(READ/WRITE DATA)
                 008Eh       | BYTE  |  W  | 8255A MODE REGISTER
                 ------------+-------+-----+--------------------------------------------------
                 ●0088h,Read/Write: 8255A Port A Read/Write data ENVELOP1 control
                 ●008Ah,Read/Write: 8255A Port B Read/Write data ENVELOP2 control
                 ●008Ch,Read/Write: 8255A Port C Read/Write data TMS3631-RI104 control
                 ●008Eh,Write: 8255A Control Register 8255A control register. For details, see the 8255A datasheet.
I/O              0188h,018Ah
Name             WRITE MASK REGISTER
Chip
Function
                 ------------+-------+-----+--------------------------------------------------
                 I/O address | Width | R/W |Contents
                 ------------+-------+-----+--------------------------------------------------
                 0188h       | BYTE  |  W  | WRITE MASK REGISTER
                 018Ah       | BYTE  |  W  | WRITE MASK REGISTER
                 ------------+-------+-----+--------------------------------------------------
                 [WRITE] WRITE MASK REGISTER
                   bit 7: CH#8
                   bit 6: CH#7
                   bit 5: CH#6
                   bit 4: CH#5
                   bit 3: CH#4
                   bit 2: CH#3
                   bit 1: CH#2
                   bit 0: CH#1
                     1 = Sound is produced
                     0 = No sound is produced
                 [READ]
                   None
Explanation    o Writes to the mask register.
               o I/O 018Ah is an image of I/O 0188h. It doesn't matter which one you access.
I/O              018Ch,018Eh
Name             Timer
Chip             Equivalent to 8253A
Function
                 ------------+-------+-----+--------------------------------------------------
                 I/O Address | Width | R/W | Contents
                 ------------+-------+-----+--------------------------------------------------
                 018Ch       | BYTE  | R/W | 8253A COUNTER #2
                 018Eh       | BYTE  |  W  | 8253A CONTROL WORD
                 ------------+-------+-----+--------------------------------------------------
                 ●018Ch,Read/Write: 8253A COUNTER #2
                   Reads and writes 8253A counter #2.
                 ●018Eh,Write: 8253A CONTROL WORD
                   8253A control register. For details, refer to the 8253A datasheet.
Explanation    o This board does not allow access to 8253A counters #0 and #1.
I/O              008Eh,018Eh
Name             READ SWITCH, READ STATUS
Chip
Function
                 ------------+-------+-----+--------------------------------------------------
                 I/O address | Width | R/W | Contents
                 ------------+-------+-----+--------------------------------------------------
                 008Eh       | BYTE  |  R  | READ SWITCH (Reads DIP SW on board)
                 018Eh       | BYTE  |  R  | READ STATUS (Reads strap SW on board)
                 ------------+-------+-----+--------------------------------------------------
                 ●008Eh,Read: Reads I/O port address setting DIP switch
                   bit 7: AB13
                   bit 6: AB12
                   bit 5: AB11
                   bit 4: AB10
                   bit 3: AB07
                   bit 2: AB06
                   bit 1: AB05
                   bit 0: AB04
                 ●018Eh,Read: Read the interval timer interrupt number setting switch
                   bit 7,6: MINT1,MINT2
                     00b = INT0 (INT 0Bh)
                     01b = INT41 (INT 12h)
                     10b = INT5 (INT 14h)
                     11b = INT6 (INT 15h)
                   bit 5-0: Undefined
Explanation    o I/O 008Eh,Read reads the port address setting DIP SW on the
                 board that sets the other port numbers.
                 The address is fixed only for the read operation of I/O 008Eh.
               o AB15,14 (bits 15,14 of the address bus) are not decoded.